import axios from 'axios';
import { message } from 'ant-design-vue';

const service = axios.create({
  baseURL: process.env.NODE_ENV !== 'development' ? '/api' : '/',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

service.interceptors.request.use(config => {
  // 设置 token
  config.headers['x-api-token'] = '8gH3jM1kL6pN9bV27fK9q2R4pX6Lm3N1bB5tG8yJ9vD4zW7rQ3nP6sH8kL2j9M5cVQ9wE4rT7uY2iK5oP';
  
  // 如果是 POST 或 PUT 请求，确保数据是 JSON 字符串
  if (['post', 'put'].includes(config.method.toLowerCase()) && config.data) {
    if (typeof config.data !== 'string') {
      config.data = JSON.stringify(config.data);
    }
  }
  
  return config;
}, error => Promise.reject(error));

service.interceptors.response.use(
  response => {
    const { data } = response;
    // 统一处理后端返回的 code
    if (data && data.code) {
      if (data.code === '0000') {
        return data.data;
      }
      // 显示错误信息
      message.error(data.message || '请求失败');
      return Promise.reject(data);
    }
    return data;
  },
  error => {
    // 处理网络错误
    let errMsg = '网络错误';
    if (error.response && error.response.data && error.response.data.message) {
      errMsg = error.response.data.message;
    } else if (error.message) {
      errMsg = error.message;
    }
    message.error(errMsg);
    return Promise.reject(error.response ? error.response.data : error);
  }
);

export default service; 